using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class PlayerMovementMachine : StateMachine
{
    public Player Player { get; private set; }
    public PlayerStateReusableData ReusableData { get; private set; }
    public PlayerIdlingState IdlingState { get; }
    public PlayerDashState DashState { get; }
    public PlayerWalkingState WalkingState { get; }
    public PlayerRunningState RunningState { get; }
    public PlayerSprintingState SprintingState { get; }
    public PlayerLightStoppingState LightStoppingState { get; }
    public PlayerHardStoppingState HardStoppingState { get; }
    public PlayerMediumStoppingState MediumStoppingState { get; }

    public PlayerJumpingState JumpingState { get; }
    public PlayerFallingState FallingState { get; }

    public PlayerLightLandingState LightLandingState { get; }
    public PlayerHardLandingState HardLandingState { get; }
    public PlayerRollState RollState { get; }

    public PlayerMovementMachine(Player player)
    {
        Player = player;

        ReusableData = new PlayerStateReusableData();

        IdlingState = new PlayerIdlingState(this);
        DashState = new PlayerDashState(this);

        WalkingState = new PlayerWalkingState(this);
        RunningState = new PlayerRunningState(this);
        SprintingState = new PlayerSprintingState(this);

        LightStoppingState = new PlayerLightStoppingState(this);
        HardStoppingState = new PlayerHardStoppingState(this);
        MediumStoppingState = new PlayerMediumStoppingState(this);

        JumpingState = new PlayerJumpingState(this);
        FallingState = new PlayerFallingState(this);
        
        LightLandingState = new PlayerLightLandingState(this);
        HardLandingState = new PlayerHardLandingState(this);
        RollState = new PlayerRollState(this);
    }
}